/**
 * 
 */
package mm.back.service;

import java.util.List;

import mm.back.entity.Reparacion;
import mm.back.filtros.ReparacionesFiltro;
import mm.exceptions.MMGenericException;
import mm.exceptions.MMInvalidIDException;

/**
 * @author PUSDERKIS
 *
 */
public interface ReparacionService {
	
	/**
	 * Da de alta una nueva reparacion.
	 * @param reparacion la reparacion a guardar.
	 * @throws MMInvalidIDException en caso de que ya exista una reparacion en la base de datos.
	 * @throws MMGenericException en caso de error.
	 */
	void createReparacion(Reparacion reparacion) throws MMInvalidIDException,MMGenericException;
	
	/**
	 * Guarda una reparación que ya fue dada de alta en la bd.
	 * @param reparacion la reparación a guardar.
	 * @throws MMGenericException en caso de error.
	 */
	void saveReparacion(Reparacion reparacion) throws MMGenericException;
	
	/**
	 * Busca las reparaciones en base a un filtro especifico.
	 * @param filtro el filtro.
	 * @return la lista de reparaciones.
	 * @throws MMGenericException en caso de error.
	 */
	List<Reparacion> searchReparaciones(ReparacionesFiltro filtro) throws MMGenericException;
	
	/**
	 * Obtiene la reparacion.
	 * @param id el id de la reparacion.
	 * @return la reparacion
	 * @throws MMInvalidIDException si el id es invalido.
	 * @throws MMGenericException en caso de error.
	 */
	Reparacion getReparacion(Long id) throws MMInvalidIDException, MMGenericException;
}
